package com.rao.gmall.order.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.rao.gmall.model.order.OrderDetail;
import com.rao.gmall.model.order.OrderInfo;

import java.util.List;

/**
 * @author nzmxfan
 * @create 2021-08-20-19:38
 */
public interface OrderInfoService extends IService<OrderInfo> {

    /**
     * 防止订单重复提交
     * @param userId
     * @param tradeNo
     * @return
     */
    boolean checkToken(String userId, String tradeNo);

    /**
     * 检查订单的价格与库存
     * @param orderDetailList
     * @return
     */
    List<String> checkSkuPriceAndStock(List<OrderDetail> orderDetailList);

    /**
     * 创建订单（userId、skuIds）
     * @param orderInfo
     * @return
     */
    OrderInfo createOrder(OrderInfo orderInfo);

    /**
     * 关闭指定的订单（rabbitmq 调用）
     * @param id
     */
    void closeOrder(Long id);

    /**
     * 根据外部商品号更新商品状态
     * @param outTradeNo
     */
    void changeOrderStatusPayed(String outTradeNo, String orderStatus);
}
